// 在 utils/request.js 中 专门用来封装 axios
import axios from 'axios'
import store from '@/store'
import router from '@/router'

// 用这个对象 专门请求百度的后端接口
const request = axios.create({
  baseURL: 'http://www.liulongbin.top:3008'
})
// 添加全局拦截器
// 请求拦截器
request.interceptors.request.use(
  function (config) {
    // Do something before request is sent
    // 在这里 全局统一添加 token 认证
    if (config.url.startsWith('/my')) {
      config.headers.Authorization = store.state.user.token
    }
    // console.log(store)
    // console.log(config)
    return config
  }, function (error) {
    // Do something with request error
    return Promise.reject(error)
  })
// 响应拦截器
request.interceptors.response.use(
  function (response) {
    // 在2xx范围内的任何状态代码都会触发此功能
    // Any status code that lie within the range of 2xx cause this function to trigger
    // Do something with response data
    return response
  }, function (error) {
    if (error.response.status === 401) {
      // 证明 token 过期 发送给服务器的是一个无效的token
      // 1.清空 vuex中的token 和用户信息
      store.commit('user/updateToken', '')
      store.commit('user/updateUser', {})
      // 2.跳转到登录界面
      router.push('/login')
    }
    return Promise.reject(error)
  })

export default request
